package cc.rengu.igas.bomp.common.util;

import cc.rengu.igas.bomp.common.enums.WechatSubjectTypeEnum;
import cc.rengu.igas.bomp.facade.enums.BompEnterRegisterEnum;
import cc.rengu.igas.bomp.facade.enums.BompMchntTypeEnum;
import com.google.common.collect.HashBasedTable;
import com.google.common.collect.Table;

/**
 * @author: zhangxuran
 * @Date: 2020/4/13 15:58
 * @Description: 类型转换工具
 */
public class ChangeTypeUtil {


    private static final Table<String, String, String> wecharMchntTypeTables = HashBasedTable.create();

    static {
        //00-普通商户 - 071-私营独资企业 -》 SUBJECT_TYPE_INDIVIDUAL个体工商户
        wecharMchntTypeTables.put(BompMchntTypeEnum.NORMAL_MCHNT.getMchntType(), BompEnterRegisterEnum.PROPRIETORSHIP.getType(), WechatSubjectTypeEnum.SUBJECT_TYPE_INDIVIDUAL.getType());
        //10-连锁商户 - 071-私营独资企业 -》 SUBJECT_TYPE_INDIVIDUAL个体工商户
        wecharMchntTypeTables.put(BompMchntTypeEnum.CHAIN_MCHNT.getMchntType(), BompEnterRegisterEnum.PROPRIETORSHIP.getType(), WechatSubjectTypeEnum.SUBJECT_TYPE_INDIVIDUAL.getType());
        //11-连锁商户门店 - 071-私营独资企业 -》 SUBJECT_TYPE_INDIVIDUAL个体工商户
        wecharMchntTypeTables.put(BompMchntTypeEnum.CHAIN_MCHNT_STORE.getMchntType(), BompEnterRegisterEnum.PROPRIETORSHIP.getType(), WechatSubjectTypeEnum.SUBJECT_TYPE_INDIVIDUAL.getType());

        //20-小微商户 - 071-私营独资企业 -》 SUBJECT_TYPE_MICRO 小微商户
        wecharMchntTypeTables.put(BompMchntTypeEnum.WECHAT_MCHNT.getMchntType(), BompEnterRegisterEnum.PROPRIETORSHIP.getType(), WechatSubjectTypeEnum.SUBJECT_TYPE_MICRO.getType());

        //00-普通商户 - 010-国有企业 -》 SUBJECT_TYPE_ENTERPRISE企业
        wecharMchntTypeTables.put(BompMchntTypeEnum.NORMAL_MCHNT.getMchntType(), BompEnterRegisterEnum.STATE_ENTERPRISE.getType(), WechatSubjectTypeEnum.SUBJECT_TYPE_ENTERPRISE.getType());
        //00-普通商户 - 020-集体企业 -》 SUBJECT_TYPE_ENTERPRISE企业
        wecharMchntTypeTables.put(BompMchntTypeEnum.NORMAL_MCHNT.getMchntType(), BompEnterRegisterEnum.COLLECTIVE_ENTERPRISE.getType(), WechatSubjectTypeEnum.SUBJECT_TYPE_ENTERPRISE.getType());
        //00-普通商户 - 030-股份合作企业 -》 SUBJECT_TYPE_ENTERPRISE企业
        wecharMchntTypeTables.put(BompMchntTypeEnum.NORMAL_MCHNT.getMchntType(), BompEnterRegisterEnum.COOPERATIVE_STOCK_ENTERPRISE.getType(), WechatSubjectTypeEnum.SUBJECT_TYPE_ENTERPRISE.getType());
        //00-普通商户 - 041-国有联营企业 -》 SUBJECT_TYPE_ENTERPRISE企业
        wecharMchntTypeTables.put(BompMchntTypeEnum.NORMAL_MCHNT.getMchntType(), BompEnterRegisterEnum.STATE_OWNED_JOINT_VENTURE.getType(), WechatSubjectTypeEnum.SUBJECT_TYPE_ENTERPRISE.getType());
        //00-普通商户 - 042-集体联营企业 -》 SUBJECT_TYPE_ENTERPRISE企业
        wecharMchntTypeTables.put(BompMchntTypeEnum.NORMAL_MCHNT.getMchntType(), BompEnterRegisterEnum.COLLECTIVE_JOINT_VENTURE.getType(), WechatSubjectTypeEnum.SUBJECT_TYPE_ENTERPRISE.getType());
        //00-普通商户 - 043-国有与集体联营企业 -》 SUBJECT_TYPE_ENTERPRISE企业
        wecharMchntTypeTables.put(BompMchntTypeEnum.NORMAL_MCHNT.getMchntType(), BompEnterRegisterEnum.STATE_OWNED_AND_COLLECTIVE_JOINT_VENTURES.getType(), WechatSubjectTypeEnum.SUBJECT_TYPE_ENTERPRISE.getType());
        //00-普通商户 - 044-其他联营企业 -》 SUBJECT_TYPE_ENTERPRISE企业
        wecharMchntTypeTables.put(BompMchntTypeEnum.NORMAL_MCHNT.getMchntType(), BompEnterRegisterEnum.OTHER_ASSOCIATED_ENTERPRISES.getType(), WechatSubjectTypeEnum.SUBJECT_TYPE_ENTERPRISE.getType());
        //00-普通商户 - 051-国有独资公司 -》 SUBJECT_TYPE_ENTERPRISE企业
        wecharMchntTypeTables.put(BompMchntTypeEnum.NORMAL_MCHNT.getMchntType(), BompEnterRegisterEnum.STATE_OWNED_COMPANY.getType(), WechatSubjectTypeEnum.SUBJECT_TYPE_ENTERPRISE.getType());
        //00-普通商户 - 052-其他有限责任公司 -》 SUBJECT_TYPE_ENTERPRISE企业
        wecharMchntTypeTables.put(BompMchntTypeEnum.NORMAL_MCHNT.getMchntType(), BompEnterRegisterEnum.OTHER_LIMITED_LIABILITY_COMPANY.getType(), WechatSubjectTypeEnum.SUBJECT_TYPE_ENTERPRISE.getType());
        //00-普通商户 - 060-股份有限公司 -》 SUBJECT_TYPE_ENTERPRISE企业
        wecharMchntTypeTables.put(BompMchntTypeEnum.NORMAL_MCHNT.getMchntType(), BompEnterRegisterEnum.LIMITED_COMPANY.getType(), WechatSubjectTypeEnum.SUBJECT_TYPE_ENTERPRISE.getType());
        //00-普通商户 - 072-私营合伙企业 -》 SUBJECT_TYPE_ENTERPRISE企业
        wecharMchntTypeTables.put(BompMchntTypeEnum.NORMAL_MCHNT.getMchntType(), BompEnterRegisterEnum.PRIVATE_PARTNERSHIP.getType(), WechatSubjectTypeEnum.SUBJECT_TYPE_ENTERPRISE.getType());
        //00-普通商户 - 073-私营有限责任公司 -》 SUBJECT_TYPE_ENTERPRISE企业
        wecharMchntTypeTables.put(BompMchntTypeEnum.NORMAL_MCHNT.getMchntType(), BompEnterRegisterEnum.PRIVATE_LIMITED_LIABILITY_COMPANY.getType(), WechatSubjectTypeEnum.SUBJECT_TYPE_ENTERPRISE.getType());
        //00-普通商户 - 074-私营股份有限公司 -》 SUBJECT_TYPE_ENTERPRISE企业
        wecharMchntTypeTables.put(BompMchntTypeEnum.NORMAL_MCHNT.getMchntType(), BompEnterRegisterEnum.PRIVATE_SHARE_HOLDING_LIMITED_COMPANY.getType(), WechatSubjectTypeEnum.SUBJECT_TYPE_ENTERPRISE.getType());
        //00-普通商户 - 110-合资经营企业" -》 SUBJECT_TYPE_ENTERPRISE企业
        wecharMchntTypeTables.put(BompMchntTypeEnum.NORMAL_MCHNT.getMchntType(), BompEnterRegisterEnum.JOINT_VENTURE.getType(), WechatSubjectTypeEnum.SUBJECT_TYPE_ENTERPRISE.getType());
        //00-普通商户 - 120-合作经营企业 -》 SUBJECT_TYPE_ENTERPRISE企业
        wecharMchntTypeTables.put(BompMchntTypeEnum.NORMAL_MCHNT.getMchntType(), BompEnterRegisterEnum.COOPERATIVE_ENTERPRISE.getType(), WechatSubjectTypeEnum.SUBJECT_TYPE_ENTERPRISE.getType());
        //00-普通商户 - 130-独资经营企业 -》 SUBJECT_TYPE_ENTERPRISE企业
        wecharMchntTypeTables.put(BompMchntTypeEnum.NORMAL_MCHNT.getMchntType(), BompEnterRegisterEnum.INDIVIDUAL_PROPRI.getType(), WechatSubjectTypeEnum.SUBJECT_TYPE_ENTERPRISE.getType());
        //00-普通商户 - 140-投资股份有限公司 -》 SUBJECT_TYPE_ENTERPRISE企业
        wecharMchntTypeTables.put(BompMchntTypeEnum.NORMAL_MCHNT.getMchntType(), BompEnterRegisterEnum.INVESTMENT_SHARE_HOLDING_LIMITED_COMPANY.getType(), WechatSubjectTypeEnum.SUBJECT_TYPE_ENTERPRISE.getType());
        //00-普通商户 - 210-中外合资经营企业 -》 SUBJECT_TYPE_ENTERPRISE企业
        wecharMchntTypeTables.put(BompMchntTypeEnum.NORMAL_MCHNT.getMchntType(), BompEnterRegisterEnum.CHINESE_FOREIGN_JOINT_VENTURE.getType(), WechatSubjectTypeEnum.SUBJECT_TYPE_ENTERPRISE.getType());
        //00-普通商户 - 220-中外合作经营企业 -》 SUBJECT_TYPE_ENTERPRISE企业
        wecharMchntTypeTables.put(BompMchntTypeEnum.NORMAL_MCHNT.getMchntType(), BompEnterRegisterEnum.CHINESE_FOREIGN_COOPERATIVE_ENTERPRISE.getType(), WechatSubjectTypeEnum.SUBJECT_TYPE_ENTERPRISE.getType());
        //00-普通商户 - 230-外资企业 -》 SUBJECT_TYPE_ENTERPRISE企业
        wecharMchntTypeTables.put(BompMchntTypeEnum.NORMAL_MCHNT.getMchntType(), BompEnterRegisterEnum.FOREIGN_ENTERPRISE.getType(), WechatSubjectTypeEnum.SUBJECT_TYPE_ENTERPRISE.getType());
        //00-普通商户 - 240-外商投资股份有限公司 -》 SUBJECT_TYPE_ENTERPRISE企业
        wecharMchntTypeTables.put(BompMchntTypeEnum.NORMAL_MCHNT.getMchntType(), BompEnterRegisterEnum.FOREIGN_INVESTMENT_SHARE_HOLDING_LIMITED_ENTERPRISE.getType(), WechatSubjectTypeEnum.SUBJECT_TYPE_ENTERPRISE.getType());

        //10-连锁商户 - 010-国有企业 -》 SUBJECT_TYPE_ENTERPRISE企业
        wecharMchntTypeTables.put(BompMchntTypeEnum.CHAIN_MCHNT.getMchntType(), BompEnterRegisterEnum.STATE_ENTERPRISE.getType(), WechatSubjectTypeEnum.SUBJECT_TYPE_ENTERPRISE.getType());
        //10-连锁商户 - 020-集体企业 -》 SUBJECT_TYPE_ENTERPRISE企业
        wecharMchntTypeTables.put(BompMchntTypeEnum.CHAIN_MCHNT.getMchntType(), BompEnterRegisterEnum.COLLECTIVE_ENTERPRISE.getType(), WechatSubjectTypeEnum.SUBJECT_TYPE_ENTERPRISE.getType());
        //10-连锁商户 - 030-股份合作企业 -》 SUBJECT_TYPE_ENTERPRISE企业
        wecharMchntTypeTables.put(BompMchntTypeEnum.CHAIN_MCHNT.getMchntType(), BompEnterRegisterEnum.COOPERATIVE_STOCK_ENTERPRISE.getType(), WechatSubjectTypeEnum.SUBJECT_TYPE_ENTERPRISE.getType());
        //10-连锁商户 - 041-国有联营企业 -》 SUBJECT_TYPE_ENTERPRISE企业
        wecharMchntTypeTables.put(BompMchntTypeEnum.CHAIN_MCHNT.getMchntType(), BompEnterRegisterEnum.STATE_OWNED_JOINT_VENTURE.getType(), WechatSubjectTypeEnum.SUBJECT_TYPE_ENTERPRISE.getType());
        //10-连锁商户 - 042-集体联营企业 -》 SUBJECT_TYPE_ENTERPRISE企业
        wecharMchntTypeTables.put(BompMchntTypeEnum.CHAIN_MCHNT.getMchntType(), BompEnterRegisterEnum.COLLECTIVE_JOINT_VENTURE.getType(), WechatSubjectTypeEnum.SUBJECT_TYPE_ENTERPRISE.getType());
        //10-连锁商户 - 043-国有与集体联营企业 -》 SUBJECT_TYPE_ENTERPRISE企业
        wecharMchntTypeTables.put(BompMchntTypeEnum.CHAIN_MCHNT.getMchntType(), BompEnterRegisterEnum.STATE_OWNED_AND_COLLECTIVE_JOINT_VENTURES.getType(), WechatSubjectTypeEnum.SUBJECT_TYPE_ENTERPRISE.getType());
        //10-连锁商户 - 044-其他联营企业 -》 SUBJECT_TYPE_ENTERPRISE企业
        wecharMchntTypeTables.put(BompMchntTypeEnum.CHAIN_MCHNT.getMchntType(), BompEnterRegisterEnum.OTHER_ASSOCIATED_ENTERPRISES.getType(), WechatSubjectTypeEnum.SUBJECT_TYPE_ENTERPRISE.getType());
        //10-连锁商户 - 051-国有独资公司 -》 SUBJECT_TYPE_ENTERPRISE企业
        wecharMchntTypeTables.put(BompMchntTypeEnum.CHAIN_MCHNT.getMchntType(), BompEnterRegisterEnum.STATE_OWNED_COMPANY.getType(), WechatSubjectTypeEnum.SUBJECT_TYPE_ENTERPRISE.getType());
        //10-连锁商户 - 052-其他有限责任公司 -》 SUBJECT_TYPE_ENTERPRISE企业
        wecharMchntTypeTables.put(BompMchntTypeEnum.CHAIN_MCHNT.getMchntType(), BompEnterRegisterEnum.OTHER_LIMITED_LIABILITY_COMPANY.getType(), WechatSubjectTypeEnum.SUBJECT_TYPE_ENTERPRISE.getType());
        //10-连锁商户 - 060-股份有限公司 -》 SUBJECT_TYPE_ENTERPRISE企业
        wecharMchntTypeTables.put(BompMchntTypeEnum.CHAIN_MCHNT.getMchntType(), BompEnterRegisterEnum.LIMITED_COMPANY.getType(), WechatSubjectTypeEnum.SUBJECT_TYPE_ENTERPRISE.getType());
        //10-连锁商户 - 072-私营合伙企业 -》 SUBJECT_TYPE_ENTERPRISE企业
        wecharMchntTypeTables.put(BompMchntTypeEnum.CHAIN_MCHNT.getMchntType(), BompEnterRegisterEnum.PRIVATE_PARTNERSHIP.getType(), WechatSubjectTypeEnum.SUBJECT_TYPE_ENTERPRISE.getType());
        //10-连锁商户 - 073-私营有限责任公司 -》 SUBJECT_TYPE_ENTERPRISE企业
        wecharMchntTypeTables.put(BompMchntTypeEnum.CHAIN_MCHNT.getMchntType(), BompEnterRegisterEnum.PRIVATE_LIMITED_LIABILITY_COMPANY.getType(), WechatSubjectTypeEnum.SUBJECT_TYPE_ENTERPRISE.getType());
        //10-连锁商户 - 074-私营股份有限公司 -》 SUBJECT_TYPE_ENTERPRISE企业
        wecharMchntTypeTables.put(BompMchntTypeEnum.CHAIN_MCHNT.getMchntType(), BompEnterRegisterEnum.PRIVATE_SHARE_HOLDING_LIMITED_COMPANY.getType(), WechatSubjectTypeEnum.SUBJECT_TYPE_ENTERPRISE.getType());
        //10-连锁商户 - 110-合资经营企业" -》 SUBJECT_TYPE_ENTERPRISE企业
        wecharMchntTypeTables.put(BompMchntTypeEnum.CHAIN_MCHNT.getMchntType(), BompEnterRegisterEnum.JOINT_VENTURE.getType(), WechatSubjectTypeEnum.SUBJECT_TYPE_ENTERPRISE.getType());
        //10-连锁商户 - 120-合作经营企业 -》 SUBJECT_TYPE_ENTERPRISE企业
        wecharMchntTypeTables.put(BompMchntTypeEnum.CHAIN_MCHNT.getMchntType(), BompEnterRegisterEnum.COOPERATIVE_ENTERPRISE.getType(), WechatSubjectTypeEnum.SUBJECT_TYPE_ENTERPRISE.getType());
        //10-连锁商户 - 130-独资经营企业 -》 SUBJECT_TYPE_ENTERPRISE企业
        wecharMchntTypeTables.put(BompMchntTypeEnum.CHAIN_MCHNT.getMchntType(), BompEnterRegisterEnum.INDIVIDUAL_PROPRI.getType(), WechatSubjectTypeEnum.SUBJECT_TYPE_ENTERPRISE.getType());
        //10-连锁商户 - 140-投资股份有限公司 -》 SUBJECT_TYPE_ENTERPRISE企业
        wecharMchntTypeTables.put(BompMchntTypeEnum.CHAIN_MCHNT.getMchntType(), BompEnterRegisterEnum.INVESTMENT_SHARE_HOLDING_LIMITED_COMPANY.getType(), WechatSubjectTypeEnum.SUBJECT_TYPE_ENTERPRISE.getType());
        //10-连锁商户 - 210-中外合资经营企业 -》 SUBJECT_TYPE_ENTERPRISE企业
        wecharMchntTypeTables.put(BompMchntTypeEnum.CHAIN_MCHNT.getMchntType(), BompEnterRegisterEnum.CHINESE_FOREIGN_JOINT_VENTURE.getType(), WechatSubjectTypeEnum.SUBJECT_TYPE_ENTERPRISE.getType());
        //10-连锁商户 - 220-中外合作经营企业 -》 SUBJECT_TYPE_ENTERPRISE企业
        wecharMchntTypeTables.put(BompMchntTypeEnum.CHAIN_MCHNT.getMchntType(), BompEnterRegisterEnum.CHINESE_FOREIGN_COOPERATIVE_ENTERPRISE.getType(), WechatSubjectTypeEnum.SUBJECT_TYPE_ENTERPRISE.getType());
        //10-连锁商户 - 230-外资企业 -》 SUBJECT_TYPE_ENTERPRISE企业
        wecharMchntTypeTables.put(BompMchntTypeEnum.CHAIN_MCHNT.getMchntType(), BompEnterRegisterEnum.FOREIGN_ENTERPRISE.getType(), WechatSubjectTypeEnum.SUBJECT_TYPE_ENTERPRISE.getType());
        //10-连锁商户 - 240-外商投资股份有限公司 -》 SUBJECT_TYPE_ENTERPRISE企业
        wecharMchntTypeTables.put(BompMchntTypeEnum.CHAIN_MCHNT.getMchntType(), BompEnterRegisterEnum.FOREIGN_INVESTMENT_SHARE_HOLDING_LIMITED_ENTERPRISE.getType(), WechatSubjectTypeEnum.SUBJECT_TYPE_ENTERPRISE.getType());

        //00-普通商户 - 310-政府机构 -》 SUBJECT_TYPE_INSTITUTIONS_CLONED事业单位
        wecharMchntTypeTables.put(BompMchntTypeEnum.NORMAL_MCHNT.getMchntType(), BompEnterRegisterEnum.GOVERNMENT_ORGANS.getType(), WechatSubjectTypeEnum.SUBJECT_TYPE_INSTITUTIONS_CLONED.getType());
        //00-普通商户 - 320-事业单位 -》 SUBJECT_TYPE_INSTITUTIONS_CLONED事业单位
        wecharMchntTypeTables.put(BompMchntTypeEnum.NORMAL_MCHNT.getMchntType(), BompEnterRegisterEnum.GOVERNMENT_AFFILICATED_INSTITUTION.getType(), WechatSubjectTypeEnum.SUBJECT_TYPE_INSTITUTIONS_CLONED.getType());

        //00-普通商户 - 080-其他企业 -》 SUBJECT_TYPE_OTHERS其他组织
        wecharMchntTypeTables.put(BompMchntTypeEnum.NORMAL_MCHNT.getMchntType(), BompEnterRegisterEnum.OTHER_ENTERPRISE.getType(), WechatSubjectTypeEnum.SUBJECT_TYPE_OTHERS.getType());

    }

    public static String getWechatEnterpriseType(String mchntType, String mchntNature) {
        return wecharMchntTypeTables.get(mchntType, mchntNature);
    }
}
